<!-- 原生通知组件 - 使用uni原生API -->
<template>
  <!-- 通知不会在模板中显示，通过uni API控制 -->
</template>

<script setup>
import { ref, onMounted } from 'vue'

const showNotification = (message) => {
  console.log('🎉 显示原生通知:', message)
  
  // 方式1: 使用Modal显示详细信息
  uni.showModal({
    title: `🎉 ${message.sponsorType}赞助成功！`,
    content: `赞助者：${message.sponsorName}\n赞助金额：¥${message.amount}\n赞助等级：${message.level}\n感谢您的慷慨支持！`,
    showCancel: false,
    confirmText: '太棒了！',
    confirmColor: '#ff6b6b',
    success: () => {
      console.log('用户确认了赞助通知')
    }
  })
  
  // 方式2: 延迟显示ActionSheet作为补充
  setTimeout(() => {
    uni.showActionSheet({
      itemList: [
        `🎉 ${message.sponsorName} 慷慨赞助`,
        `金额：¥${message.amount}`,
        `等级：${message.level}`,
        '点击查看详情'
      ],
      success: (res) => {
        console.log('用户选择了操作:', res.tapIndex)
        if (res.tapIndex === 3) {
          // 跳转到赞助页面
          uni.navigateTo({
            url: '/pages/sponsorship/index'
          })
        }
      }
    })
  }, 2000)
}

// 显示加载提示通知
const showLoadingNotification = (message) => {
  uni.showLoading({
    title: `🎉 ${message.sponsorName} 赞助了 ¥${message.amount}`,
    mask: true
  })
  
  // 根据等级设置不同的显示时间
  const duration = message.level >= 3 ? 5000 : 3000
  setTimeout(() => {
    uni.hideLoading()
  }, duration)
}

// 显示标题栏通知
const showTitleNotification = (message) => {
  const originalTitle = '技能树'
  const newTitle = `🎉 ${message.sponsorName} 赞助了 ¥${message.amount}`
  
  uni.setNavigationBarTitle({
    title: newTitle
  })
  
  // 5秒后恢复原标题
  setTimeout(() => {
    uni.setNavigationBarTitle({
      title: originalTitle
    })
  }, 5000)
}

// 显示TabBar角标通知
const showTabBadgeNotification = (message) => {
  // 在赞助页面tab显示角标
  uni.setTabBarBadge({
    index: 2, // 假设赞助页面是第3个tab
    text: 'NEW'
  })
  
  // 3秒后清除角标
  setTimeout(() => {
    uni.removeTabBarBadge({
      index: 2
    })
  }, 3000)
}

// 组合通知 - 多种方式同时使用
const showComboNotification = (message) => {
  console.log('🎉 显示组合原生通知')
  
  // 1. 立即显示Modal
  showNotification(message)
  
  // 2. 延迟显示Loading
  setTimeout(() => {
    showLoadingNotification(message)
  }, 1000)
  
  // 3. 延迟显示标题栏
  setTimeout(() => {
    showTitleNotification(message)
  }, 2000)
  
  // 4. 延迟显示角标
  setTimeout(() => {
    showTabBadgeNotification(message)
  }, 3000)
}

// 暴露方法到全局
onMounted(() => {
  if (typeof getApp === 'function') {
    try {
      const app = getApp()
      if (app) {
        app.__NATIVE_NOTIFICATION__ = {
          show: showNotification,
          showLoading: showLoadingNotification,
          showTitle: showTitleNotification,
          showBadge: showTabBadgeNotification,
          showCombo: showComboNotification
        }
        console.log('🎉 NativeNotification 已暴露到全局')
      }
    } catch (error) {
      console.log('🎉 暴露NativeNotification失败:', error)
    }
  }
})

// 监听赞助成功事件
uni.$on('sponsor-success', (message) => {
  console.log('🎉 NativeNotification 收到赞助消息:', message)
  
  // 根据等级选择不同的通知方式
  if (message.level >= 4) {
    // 高等级使用组合通知
    showComboNotification(message)
  } else if (message.level >= 2) {
    // 中等级使用Modal + Loading
    showNotification(message)
    setTimeout(() => showLoadingNotification(message), 1000)
  } else {
    // 低等级使用简单Modal
    showNotification(message)
  }
})
</script>

<style scoped>
/* 原生通知不需要样式，通过uni API控制 */
</style>

